﻿Imports System.Data
Imports System.Diagnostics
Imports Emails
Imports System.Net.Mail

Partial Class Utils_SynchSklad
    Inherits System.Web.UI.Page

    Public errUpdate As New ArrayList()

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim skladData As New DataSet
        Dim katalogData As New DataSet
        Dim joinData As New DataSet
        Dim parentData() As DataRow
        Dim mail As New Emails
        Dim zprava As New StringBuilder
        Dim predmet As String = "Synchronizace skladových zásob - e-obchod."
        Dim adresat As MailAddress = New MailAddress("info@horejsi.cz")
 
        Try
            skladData.ReadXml(MapPath("..\Sklad\tmpsklkarty.xml"))
            katalogData.ReadXml(MapPath("..\Sklad\tmpkatalog.xml"))

        Catch ex As Exception
            zprava.Append("Při čtení xml souborů došlo k následující chybě :<br/>")
            zprava.Append(ex.Message)
            mail.OdesliMail(adresat, predmet, zprava.ToString)
        End Try
        



        joinData.Tables.Add(skladData.Tables("sklkarty").Copy)
        joinData.Tables.Add(katalogData.Tables("katalog").Copy)
        joinData.Relations.Add("klic", joinData.Tables("sklkarty").Columns("klic"), joinData.Tables("katalog").Columns("klic"), False)

        'Odstranim predchozi zaznamy
        DS_Sklad.Delete()

        'Plnim aktualizovana data
        For Each row As DataRow In joinData.Tables("sklkarty").Rows

            parentData = row.GetChildRows("klic")


            DS_Sklad.InsertParameters("klic").DefaultValue = row.Item("klic").ToString
            DS_Sklad.InsertParameters("stav").DefaultValue = row.Item("stav").ToString
            DS_Sklad.InsertParameters("sklad").DefaultValue = row.Item("sklad").ToString
            Try
                DS_Sklad.InsertParameters("MC").DefaultValue = parentData(0)("cena1").ToString
                DS_Sklad.InsertParameters("VC").DefaultValue = parentData(0)("cena").ToString
                DS_Sklad.InsertParameters("DPH").DefaultValue = parentData(0)("sazba_dph").ToString

            Catch ex1 As Exception
                DS_Sklad.InsertParameters("MC").DefaultValue = ""
                DS_Sklad.InsertParameters("VC").DefaultValue = ""
                DS_Sklad.InsertParameters("DPH").DefaultValue = ""
            End Try
            If parentData.Length > 0 Then
                DS_Sklad.InsertParameters("skupina").DefaultValue = IIf(IsNumeric(parentData(0)("skupina").ToString), parentData(0)("skupina").ToString, "")
            Else
                DS_Sklad.InsertParameters("skupina").DefaultValue = ""
            End If
            DS_Sklad.Insert()
        Next

        Dim stavSklad As DataView = CType(DS_Sklad.Select(DataSourceSelectArguments.Empty), DataView)

        For Each polozka As DataRow In stavSklad.Table.Rows
            DS_UpdateProdukt.UpdateParameters("Skladem").DefaultValue = polozka.Item("stav")
            DS_UpdateProdukt.UpdateParameters("ID_objcislo").DefaultValue = polozka.Item("klic")
            DS_UpdateProdukt.UpdateParameters("MC").DefaultValue = polozka.Item("MC")
            DS_UpdateProdukt.UpdateParameters("VC").DefaultValue = polozka.Item("VC")
            DS_UpdateProdukt.UpdateParameters("DPH").DefaultValue = polozka.Item("DPH")
            DS_UpdateProdukt.Update()
        Next

        If errUpdate.Count > 0 Then
            zprava.Append(String.Format("Dne {0} se nepodařilo zapsat stav skladových zásob u těchto produktů :<br/>", Now))
            For Each objcislo As String In errUpdate
                zprava.Append(String.Format("- {0}<br/>", objcislo))
            Next
            mail.OdesliMail(adresat, predmet, zprava.ToString)
        End If

    End Sub

    Protected Sub DS_UpdateProdukt_Updated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles DS_UpdateProdukt.Updated
        If e.AffectedRows = 0 Then
            errUpdate.Add(e.Command.Parameters("@ID_objcislo").Value())
        End If
    End Sub

End Class
